// 举报接口相关API封装
import request from './request';

/**
 * 创建举报
 * @param data 举报信息
 * @param data.reporterId 举报人ID
 * @param data.targetType 被举报的类型（POST USER COMMENT RESOURCE）
 * @param data.targetId 被举报的对应ID
 * @param data.reason 举报理由
 * @returns Promise<ResultLong> 响应结果
 */
export function createReport(data: {
  reporterId?: number;
  targetType?: string;
  targetId?: number;
  reason?: string;
}) {
  return request({
    url: '/report',
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data,
  });
}

/**
 * 处理举报
 * @param data 处理信息
 * @param data.id 举报ID
 * @param data.handlerId 处理人ID
 * @param data.status 处理状态（PENDING, RESOLVED, REJECTED）
 * @param data.handleResult 处理结果说明
 * @returns Promise<{ code: number; message: string; data: object }> 响应结果
 */
export function handleReport(data: {
  id?: number;
  handlerId?: number;
  status?: 'PENDING' | 'RESOLVED' | 'REJECTED';
  handleResult?: string;
}) {
  return request({
    url: '/report/handle',
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data,
  });
}

/**
 * 根据ID获取举报详情
 * @param id 举报ID
 * @returns Promise<{ code: number; message: string; data: ReportVO }> 举报详情
 */
export function getReportById(id: number) {
  return request({
    url: `/report/${id}`,
    method: 'GET',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
  });
}

/**
 * 分页获取举报列表
 * @param params 查询参数
 * @param params.status 举报状态（可选）
 * @param params.targetType 被举报类型（可选）
 * @param params.page 页码（可选）
 * @param params.size 每页数量（可选）
 * @returns Promise<{ code: number; message: string; data: PageResultVOReportListVO }> 举报分页列表
 */
export function getReportsPage(params?: {
  status?: string;
  targetType?: string;
  page?: number;
  size?: number;
}) {
  return request({
    url: '/report/page',
    method: 'GET',
    params,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
  });
}
